<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>01_变量提升与函数提升</title>
</head>
<body>
<!--
1. 变量声明提升
  * 通过var定义(声明)的变量, 在定义语句之前就可以访问到
  * 值: undefined
2. 函数声明提升
  * 通过function声明的函数, 在之前就可以直接调用
  * 值: 函数定义(对象)
3. 问题: 变量提升和函数提升是如何产生的?
-->
<script type="text/javascript">
  // console.log('程序开始执行');
  // console.log('程序继续执行');
  // console.log(a);
  // var a = 123;
  // fun();
  // function fun() {
  //   var a = 234;
  //   console.log('fun()');
  // }
  //
  // fun2();
  // var fun2 = function(){}
  // console.log('程序执行完毕');
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  // /*
  //  面试题: 输出什么?
  //  */
  // var a = 4
  // function fn () {
  //   console.log(a)  // undefined
  //   var a = 5
  // }
  // fn()
  //
  //
  // /*变量提升*/
  // console.log(a1) //
  // /*函数提升*/
  // a2() //
  //
  // var a1 = 3
  // function a2() {
  //   console.log('a2()')
  // }
  //
  //

  var a = 123;
  console.log('----------------');
  
  function fun() {
    console.log('fun()');
  }
  
  fun();
  console.log('-------------');
</script>
</body>
</html>